home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Leser 15 / Amiga Plus Leser CD 15.iso / Tools / Freeware / reportplus / source / rp.h < prev    next >
Encoding:
C/C++ Source or Header  |  2002-03-13  |  17.8 KB  |  531 lines

  1. /* types */
  2.  
  3. #define AUTO            auto    /* automatic variables */
  4. #define AGLOBAL         ;       /* global (project-scope) */
  5. #define MODULE        static    /* external static (file-scope) */
  6. #define PERSIST        static    /* internal static (function-scope) */
  7. typedef signed char    ABOOL;    /* 8-bit signed quantity (replaces BOOL) */
  8. typedef signed char    SBYTE;    /* 8-bit signed quantity (replaces Amiga BYTE) */
  9. typedef signed short    SWORD;    /* 16-bit signed quantity (replaces Amiga WORD) */
  10. typedef signed long    SLONG;    /* 32-bit signed quantity (same as LONG) */
  11. #define elif        else if
  12.  
  13. #define ASM             __asm
  14. #define REG(x)          register __ ## x
  15.  
  16. #ifdef __STORM__
  17.     #define __inline
  18.     #define chip
  19.     #define EXIT_SUCCESS  0
  20.     #define EXIT_FAILURE 20
  21.     AGLOBAL ULONG stcl_d(STRPTR out, ULONG val);
  22.     AGLOBAL ULONG stcl_h(STRPTR out, ULONG val);
  23. #endif
  24. #ifdef LATTICE
  25.     #define CONST_STRPTR STRPTR
  26. #endif
  27.  
  28. // defined by AmigaOS are: IMPORT, UBYTE, UWORD, ULONG.
  29.  
  30. #define STATUS_READY    0
  31. #define STATUS_BUSY     1
  32. #define STATUS_STOPPING 2
  33.  
  34. // page 14...
  35. #define  GID_1_LY1  0  // root layout
  36. #define  GID_1_BU1  1  // button 1 (other page)
  37. #define  GID_1_BU2  2  // button 2 (menu)
  38. #define  GID_1_TE1  3  // text editor 1
  39. #define  GID_1_TE2  4  // text editor 1
  40. #define  GID_1_TE3  5  // text editor 1
  41. #define  GID_1_TE4  6  // text editor 1
  42. #define  GID_1_TE5  7  // text editor 1
  43. #define  GIDS_1     GID_1_TE5
  44.  
  45. // page 41...
  46. #define  GID_4_LY1  0  // root layout
  47. #define  GID_4_ST1  1  // string 1 (modulename.type)
  48. #define  GID_4_ST2  2  // string 2 (functionname)
  49. #define  GID_4_ST3  3  // string 3 (description)
  50. #define  GID_4_ST4  4  // string 4 (type: returncode)
  51. #define  GID_4_ST5  5  // string 5 (type: arg 1)
  52. #define  GID_4_ST6  6  // string 6 (type: arg 2)
  53. #define  GID_4_ST7  7  // string 7 (type: arg 3)
  54. #define  GID_4_ST8  8  // string 8 (type: arg 4)
  55. #define  GID_4_ST9  9  // string 9 (type: arg 5)
  56. #define  GID_4_ST10 10 // string 10 (type: arg 6)
  57. #define  GID_4_ST11 11 // string 11 (type: arg 7)
  58. #define  GID_4_ST12 12 // string 12 (type: arg 8)
  59. #define  GID_4_ST13 13 // string 13 (name: returncode)
  60. #define  GID_4_ST14 14 // string 14 (name: arg 1)
  61. #define  GID_4_ST15 15 // string 15 (name: arg 2)
  62. #define  GID_4_ST16 16 // string 16 (name: arg 3)
  63. #define  GID_4_ST17 17 // string 17 (name: arg 4)
  64. #define  GID_4_ST18 18 // string 18 (name: arg 5)
  65. #define  GID_4_ST19 19 // string 19 (name: arg 6)
  66. #define  GID_4_ST20 20 // string 20 (name: arg 7)
  67. #define  GID_4_ST21 21 // string 21 (name: arg 8)
  68. #define  GID_4_ST22 22 // string 22 (reg: returncode)
  69. #define  GID_4_ST23 23 // string 23 (reg: arg 1)
  70. #define  GID_4_ST24 24 // string 24 (reg: arg 2)
  71. #define  GID_4_ST25 25 // string 25 (reg: arg 3)
  72. #define  GID_4_ST26 26 // string 26 (reg: arg 4)
  73. #define  GID_4_ST27 27 // string 27 (reg: arg 5)
  74. #define  GID_4_ST28 28 // string 28 (reg: arg 6)
  75. #define  GID_4_ST29 29 // string 29 (reg: arg 7)
  76. #define  GID_4_ST30 30 // string 30 (reg: arg 8)
  77. #define  GID_4_IN1  31 // integer 1 (minimum version)
  78. #define  GID_4_BU1  32 // button 1 (other page)
  79. #define  GID_4_BU2  33 // button 2 (menu)
  80. // page 42...
  81. #define  GID_4_LY2  34 // root layout
  82. #define  GID_4_TE1  35 // text editor 1 (function)
  83. #define  GID_4_TE2  36 // text editor 2
  84. #define  GID_4_TE3  37 // text editor 3
  85. #define  GID_4_TE4  38 // text editor 4
  86. #define  GID_4_TE5  39 // text editor 5
  87. #define  GID_4_TE6  40 // text editor 6
  88. #define  GID_4_TE7  41 // text editor 7
  89. #define  GID_4_TE8  42 // text editor 8
  90. #define  GID_4_TE9  43 // text editor 9
  91. #define  GID_4_TE10 44 // text editor 10
  92. #define  GID_4_TE11 45 // text editor 11
  93. #define  GID_4_TE12 46 // text editor 12
  94. #define  GID_4_TE13 47 // text editor 13
  95. #define  GID_4_TE14 48 // text editor 14
  96. #define  GID_4_TE15 49 // text editor 15
  97. #define  GID_4_BU3  50 // button 3 (other page)
  98. #define  GID_4_BU4  51 // button 4 (menu)
  99. #define  GIDS_4     GID_4_BU4
  100. // GID_4_ numbers cannot be arbitrarily rearranged.
  101.  
  102. #define  GID_5_LY1 0  // root layout
  103. #define  GID_5_ST1 1  // string 1 (card)
  104. #define  GID_5_ST2 2  // string 2 (manufacturer)
  105. #define  GID_5_ST3 3  // string 3 (product)
  106. #define  GID_5_ST4 4  // string 4 (description)
  107. #define  GID_5_BU1 5  // button 1 (menu)
  108. #define  GID_5_BU2 6  // button 2 (previous card)
  109. #define  GID_5_BU3 7  // button 3 (next card)
  110. #define  GID_5_CB1 8  // checkbox 1 (internal)
  111. #define  GID_5_CB2 9  // checkbox 2 (official)
  112. #define  GID_5_CH1 10 // chooser 1 (precedence)
  113. #define  GID_5_IN1 11 // integer 1 (manufacturer ID)
  114. #define  GID_5_IN2 12 // integer 2 (product ID)
  115. #define  GIDS_5    GID_5_IN2
  116.  
  117. #define  GID_8_LY1  0  // root layout
  118. #define  GID_8_ST1  1  // string 1 (path)
  119. #define  GID_8_ST2  2  // string 2 (log file)
  120. #define  GID_8_ST3  3  // string 3 (capacity)
  121. #define  GID_8_ST4  4  // string 4 (free)
  122. #define  GID_8_ST5  5  // string 5 (total)
  123. #define  GID_8_ST6  6  // string 6 (files)
  124. #define  GID_8_ST7  7  // string 7 (dirs)
  125. #define  GID_8_ST8  8  // string 8 (block size)
  126. #define  GID_8_BU1  9  // button 1 (path ASL)
  127. #define  GID_8_BU2 10  // button 2 (menu)
  128. #define  GID_8_BU3 12  // button 3 (log file ASL)
  129. #define  GID_8_BU4 13  // button 4 (update)
  130. #define  GID_8_BU5 14  // button 5 (stop)
  131. #define  GID_8_BU6 15  // button 6 (root)
  132. #define  GID_8_BU7 16  // button 7 (parent)
  133. #define  GID_8_LB1 17  // listbrowser 1 (duplicates)
  134. #define  GID_8_LB2 18  // listbrowser 2 (path sizes)
  135. #define  GID_8_CB1 19  // checkbox 1 (log to file?)
  136. #define  GID_8_CB2 20  // checkbox 2 (include slack?)
  137. #define  GID_8_CB3 21  // checkbox 3 (find duplicates?)
  138. #define  GID_8_CH1 22  // chooser 1 (view as)
  139. #define  GID_8_FG1 23  // fuel gauge 1 (status)
  140. #define  GIDS_8    GID_8_FG1
  141.  
  142. #define GID_10_LY1 0  // root layout
  143. #define GID_10_CB1 1  // checkbox 1
  144. #define GID_10_CB2 2  // checkbox 2
  145. #define GID_10_CB3 3  // checkbox 3
  146. #define GID_10_CB4 4  // checkbox 4
  147. #define GID_10_CB5 5  // checkbox 5
  148. #define GID_10_CB6 6  // checkbox 6
  149. #define GID_10_CB7 7  // checkbox 7
  150. #define GID_10_CB8 8  // checkbox 8
  151. #define GID_10_CB9 9  // checkbox 9  (log to file?)
  152. #define GID_10_CH1 10 // chooser     (AmigaOS version)
  153. #define GID_10_ST1 11 // string 1    (pathname)
  154. #define GID_10_ST2 12 // string 2    (status)
  155. #define GID_10_BU1 13 // button 1    (pathname(s) ASL)
  156. #define GID_10_BU2 14 // button 2    (update)
  157. #define GID_10_BU3 15 // button 3    (stop)
  158. #define GID_10_BU4 16 // button 4    (menu)
  159. #define GID_10_LB1 17 // listbrowser (results)
  160. #define GIDS_10    GID_10_LB1
  161.  
  162. #define GID_11_LY1 0
  163. #define GID_11_ST1 1
  164. #define GID_11_ST2 2
  165. #define GID_11_ST3 3
  166. #define GID_11_ST4 4
  167. #define GID_11_ST5 5
  168. #define GID_11_ST6 6
  169. #define GID_11_ST7 7
  170. #define GID_11_TE1 8
  171. #define GID_11_BU1 9
  172. #define GIDS_11    GID_11_BU1
  173.  
  174. #define GID_12_LY1 0  // root layout
  175. #define GID_12_CH1 1  // chooser 1   (icon type)
  176. #define GID_12_CB1 2  // checkbox 1  (optimize?)
  177. #define GID_12_CB2 3  // checkbox 2  (planar?)
  178. #define GID_12_ST1 4  // string 1    (pathname(s))
  179. #define GID_12_ST2 5  // string 2    (status)
  180. #define GID_12_BU1 6  // button 1    (pathname(s) ASL)
  181. #define GID_12_BU2 7  // button 2    (menu)
  182. #define GID_12_BU3 8  // button 3    (process)
  183. #define GID_12_BU4 9  // button 4    (stop)
  184. #define GIDS_12    GID_12_BU4
  185.  
  186. #define BUG        0
  187. #define COM        1
  188. #define ENH        2
  189.  
  190. #define FONTX      8
  191. #define FONTY      8
  192.  
  193. // ASCII values (vanillakey)
  194. #define TAB        9 /* horizontal tab */
  195. #define LF        10 /* linefeed */
  196. #define CR        13 /* carriage return */
  197. #define ESCAPE    27
  198. #define QUOTE     34 /* " */
  199.  
  200. #define FUNCTIONS 12
  201.  
  202. // Scancodes (rawkey)
  203. #define SCAN_GRAVE   0
  204. #define SCAN_1       1
  205. #define SCAN_8       8
  206. #define SCAN_W      17
  207. #define SCAN_E      18
  208. #define SCAN_R      19
  209. #define SCAN_T      20
  210. #define SCAN_I      23
  211. #define SCAN_O      24
  212. #define SCAN_P      25
  213. #define SCAN_S      33
  214. #define SCAN_D      34
  215. #define SCAN_F      35
  216. #define SCAN_G      36
  217. #define SCAN_H      37
  218. #define SCAN_L      40
  219. #define SCAN_C      51
  220. #define SCAN_V      52
  221. #define SCAN_B      53
  222. #define SCAN_N      54
  223. #define SCAN_PERIOD 57
  224. #define SCAN_ESCAPE 69
  225. #define SCAN_UP     76
  226. #define SCAN_DOWN   77
  227. #define SCAN_HELP   95
  228.  
  229. #define GREY              0
  230. #define BLACK             1
  231. #define WHITE             2
  232. #define RED               3
  233. #define BLUE              4
  234. #define LIGHTGREY         5
  235. #define ORANGE            6
  236. #define YELLOW            7
  237. #define LIGHTGREEN       14
  238.  
  239. #define TITLEBARTEXT      "Report+ 5.3"
  240.  
  241. #define FIRSTQUALIFIER 0x61
  242. #define LASTQUALIFIER  0x67
  243. #define KEYUP          0x80 /* key release */
  244.  
  245. #define MN_PROJECT        0
  246. #define MN_HELP           1
  247.  
  248. #define IN_NEW            0
  249. #define IN_OPEN           1
  250. #define IN_SAVE           3
  251. #define IN_SAVEAS         4
  252. #define IN_QUIT           6
  253.  
  254. #define IN_MANUAL         0
  255. #define IN_ABOUT          2
  256.  
  257. AGLOBAL void report1(void);
  258. AGLOBAL void report_gt_loop(ULONG class, struct Gadget* addr, UWORD code, UWORD qual);
  259. AGLOBAL void report_ra_loop(ULONG gid);
  260. AGLOBAL void report_exit(void);
  261. AGLOBAL void report_init(void);
  262. AGLOBAL void sender(void);
  263. AGLOBAL void config(void);
  264. AGLOBAL void newreport(ABOOL display);
  265. AGLOBAL void openreport(void);
  266. AGLOBAL void savereport(ABOOL saveas);
  267. AGLOBAL void loadreport(void);
  268.  
  269. AGLOBAL void aminet_init(void);
  270. AGLOBAL void aminet_die(void);
  271. AGLOBAL void aminet1(void);
  272. AGLOBAL void aminet_loop(ULONG class, struct Gadget* addr, UWORD code, UWORD qual);
  273. AGLOBAL void aminet_exit(void);
  274. AGLOBAL void newaminet(ABOOL display);
  275. AGLOBAL void openaminet(void);
  276. AGLOBAL void saveaminet(ABOOL saveas);
  277. AGLOBAL void loadaminet(void);
  278.  
  279. AGLOBAL void acse1(void);
  280. AGLOBAL void acse2(void);
  281. AGLOBAL void acse3(void);
  282. AGLOBAL void acse_exit(void);
  283. AGLOBAL void decrypt(void);
  284. AGLOBAL void acse_loop(ULONG class, struct Gadget* addr, UWORD code);
  285.  
  286. AGLOBAL void autodoc_init(void);
  287. AGLOBAL void autodoc1(void);
  288. AGLOBAL void autodoc2(void);
  289. AGLOBAL void newautodoc(ABOOL display);
  290. AGLOBAL void openautodoc(void);
  291. AGLOBAL void loadautodoc(void);
  292. AGLOBAL void saveautodoc(ABOOL saveas);
  293. AGLOBAL void autodoc_loop(ULONG gid);
  294. AGLOBAL ULONG Hook4Func(struct Hook *h, VOID *o, VOID *msg);
  295.  
  296. AGLOBAL void manuf1(void);
  297. AGLOBAL void manuf_loop(ULONG gid);
  298. AGLOBAL void manuf_config(void);
  299. AGLOBAL void manuf_die(void);
  300. AGLOBAL ULONG Hook5Func(struct Hook *h, VOID *o, VOID *msg);
  301.  
  302. AGLOBAL void iff1(void);
  303. AGLOBAL void iff_loop(ULONG class, struct Gadget* addr, UWORD code, UWORD qual);
  304. AGLOBAL void iff_config(void);
  305. AGLOBAL void iff_die(void);
  306.  
  307. AGLOBAL void eol1(void);
  308. AGLOBAL void eol2(void);
  309. AGLOBAL void eolconvert(ABOOL gui);
  310. AGLOBAL void eol_loop(ULONG class, struct Gadget* addr, UWORD code, UWORD qual);
  311. AGLOBAL void eol_die(void);
  312.  
  313. AGLOBAL void size_init(void);
  314. AGLOBAL void size_die(void);
  315. AGLOBAL void size1(void);
  316. AGLOBAL void updatesize(void);
  317. AGLOBAL void size_loop(ULONG gid);
  318. AGLOBAL void size_exit(void);
  319. AGLOBAL ULONG Hook8Func(struct Hook *h, VOID *o, VOID *msg);
  320.  
  321. AGLOBAL void batt_init(void);
  322. AGLOBAL void batt1(void);
  323. AGLOBAL void batt_loop(ULONG class, struct Gadget* addr, UWORD code, UWORD qual, SWORD mousex, SWORD mousey);
  324. AGLOBAL void batt_open(void);
  325. AGLOBAL void batt_save(ABOOL saveas);
  326. AGLOBAL void writebatt(ABOOL verify);
  327.  
  328. AGLOBAL void files1(void);
  329. AGLOBAL void files_loop(ULONG gid);
  330. AGLOBAL void files_init(void);
  331. AGLOBAL void files_exit(void);
  332. AGLOBAL void files_die(void);
  333. AGLOBAL ULONG Hook10Func(struct Hook *h, VOID *o, VOID *msg);
  334.  
  335. AGLOBAL void agdb1(void);
  336. AGLOBAL void agdb_loop(ULONG gid);
  337. AGLOBAL void newagdb(ABOOL display);
  338. AGLOBAL void openagdb(void);
  339. AGLOBAL void saveagdb(ABOOL saveas);
  340. AGLOBAL void loadagdb(void);
  341. AGLOBAL ULONG Hook11Func(struct Hook *h, VOID *o, VOID *msg);
  342.  
  343. AGLOBAL void icon1(void);
  344. AGLOBAL void icon2(void);
  345. AGLOBAL void iconconvert(ABOOL gui);
  346. AGLOBAL void icon_loop(ULONG gid);
  347. AGLOBAL void icon_do(void);
  348. AGLOBAL void icon_die(void);
  349. AGLOBAL ULONG Hook12Func(struct Hook* h, VOID* o, VOID* msg);
  350.  
  351. // rp.c
  352. AGLOBAL void outputasl(STRPTR pattern);
  353. AGLOBAL void outputstring(void);
  354. AGLOBAL void getdate(void);
  355. AGLOBAL void loop(void);
  356. AGLOBAL void navigate(void);
  357. AGLOBAL void rq(STRPTR text);
  358. AGLOBAL void cleanexit(SBYTE rc);
  359. AGLOBAL void closewindow(void);
  360. AGLOBAL void FreeNameNodes(struct List* ListPtr);
  361. AGLOBAL ABOOL asl(STRPTR pattern);
  362. AGLOBAL void readordie(STRPTR pathname);
  363. AGLOBAL void writeout(STRPTR pathname); // remember write() is reserved
  364. AGLOBAL ABOOL readin(STRPTR pathname);
  365. AGLOBAL void verynewwindow(SWORD width, SWORD height, STRPTR title, ULONG idcmp);
  366. AGLOBAL void setgadget(WORD leftx, WORD topy, WORD width, WORD height, STRPTR text,
  367.     ULONG flags);
  368. AGLOBAL void append(STRPTR pathname);
  369. AGLOBAL ULONG checkbreak(void);
  370. AGLOBAL void clearlist(struct List*);
  371. AGLOBAL ABOOL aboutloop(void);
  372. AGLOBAL VOID DrawGels(void);
  373. AGLOBAL void AddNameToTail(struct List* ListPtr, STRPTR name);
  374. AGLOBAL void drawgadgets(WORD gadgets);
  375. AGLOBAL void parse(STRPTR terminator);
  376. AGLOBAL void parsetoend(void);
  377. AGLOBAL ABOOL saveasl(STRPTR message, STRPTR pattern);
  378. AGLOBAL void handlemenus(UWORD code);
  379. AGLOBAL void gadtools(void);
  380. AGLOBAL void lockscreen(void);
  381. AGLOBAL void unlockscreen(void);
  382. AGLOBAL void getfillcolour(void);
  383. AGLOBAL void multiasl(STRPTR pattern);
  384. AGLOBAL void convert(ABOOL gui);
  385. AGLOBAL void checkabort(ABOOL gui);
  386. AGLOBAL void InitHook(struct Hook* hook, ULONG (*func)(), void* data);
  387. AGLOBAL ULONG Hook0Func(struct Hook* h, VOID* o, VOID* msg);
  388. AGLOBAL ULONG ASM hookEntry(REG(a0) struct Hook *h, REG(a2) VOID *o, REG(a1) VOID *msg);
  389. AGLOBAL void helpabout(void);
  390. AGLOBAL void clearreactionlist(struct List* ListPtr);
  391. AGLOBAL void openwindow(void);
  392. AGLOBAL ABOOL ra_checkbreak(void)
  393.  
  394. #define REPORTHEIGHT    256 /* page 11 */
  395. #define REPORTWIDTH     640 /* page 11 */
  396. #define SENDERWIDTH     442 /* page 12 */
  397. #define SENDERHEIGHT    124 /* page 12 */
  398. #define CONFIGWIDTH     320 /* page 13 */
  399. #define CONFIGHEIGHT    280 /* page 13 */
  400.  
  401. #define AMINETWIDTH     640 // page 21
  402. #define AMINETHEIGHT    256 // page 21
  403.  
  404. #define ACSE1WIDTH      640 /* page 31 */
  405. #define ACSE1HEIGHT     192 /* page 31 */
  406. #define ACSE2WIDTH      600 /* page 32 */
  407. #define ACSE2HEIGHT     126 /* page 32 */
  408. #define ACSE3WIDTH      600 /* page 33 */
  409. #define ACSE3HEIGHT      94 /* page 33 */
  410.  
  411. #define IFF1WIDTH       640 /* page 61 */
  412. #define IFF1HEIGHT      422 /* page 61 */
  413.  
  414. #define EOL1WIDTH       540 /* page 71 */
  415. #define EOL1HEIGHT      198 /* page 71 */
  416.  
  417. #define BATT1HEIGHT     166 /* page 91 */
  418. #define BATT1WIDTH      640 /* page 91 */
  419.  
  420. #define MEDFIELD         32
  421. #define LONGFIELD        64
  422. #define VLONGFIELD      254
  423. #define LONGESTFIELD  16536
  424.  
  425. AGLOBAL struct SharedStruct
  426. {   ULONG log;                      // we use GetAttr() on it, so it must be ULONG
  427.     UWORD function;
  428.     TEXT    output[VLONGFIELD + 1],
  429.           thisfile[VLONGFIELD + 1], /* <= 254 characters per pathname */
  430.           thatfile[VLONGFIELD + 1],
  431.           pathname[VLONGFIELD + 1];
  432. };
  433.  
  434. /* struct NameNode is simply an extended Node structure: a Node structure
  435. followed by 96 bytes which hold the name of the node. This is so that the
  436. NameNode structure can hold everything relevant to the node. */
  437. AGLOBAL struct NameNode
  438. {   struct Node nn_Node;
  439.     TEXT        nn_Data[96];
  440.     /* It must be long enough that you can hold a long pathname, longer than
  441.     will fit on the display, because it needs to be accurately compared
  442.     with the built-in list of system files. It needs to be at least as
  443.     long as the longest of those built-in files, plus 5 extra characters
  444.     for the .info extension. */
  445. };
  446. AGLOBAL struct PathnameNode
  447. {   struct Node nn_Node;
  448.     TEXT        nn_Data[256];
  449.     // Used to hold complete pathnames.
  450. };
  451. AGLOBAL struct ReportStruct
  452. {   ABOOL loaded;
  453.     ULONG floppies;
  454.     UWORD agnus, denise, cpu, model, type, severity, subsystem;
  455.     TEXT     chipram[5],
  456.              fastram[5],
  457.                 hard[MEDFIELD + 1],
  458.                debug[LONGFIELD + 1],
  459.            developer[LONGFIELD + 1],
  460.            expansion[LONGFIELD + 1],
  461.              summary[LONGFIELD + 1],
  462.                   ks[6],
  463.                   wb[6],
  464.                   pv[LONGFIELD + 1],
  465.                   pp[LONGFIELD + 1],
  466.            thirdname[MEDFIELD + 1],
  467.             thirdver[MEDFIELD + 1],
  468.           thirdmanuf[MEDFIELD + 1],
  469.             lastname[MEDFIELD + 1],
  470.            firstname[MEDFIELD + 1],
  471.              company[MEDFIELD + 1],
  472.                phone[MEDFIELD + 1],
  473.                email[MEDFIELD + 1],
  474.                refer[VLONGFIELD + 1],
  475.              referid[VLONGFIELD + 1],
  476.                 path[VLONGFIELD + 1],
  477.               config[VLONGFIELD + 1],
  478.            textfield[6][4096],
  479.               output[VLONGFIELD + 1];
  480. };
  481. AGLOBAL struct AminetStruct
  482. {   TEXT  amishort[41], // `short' is a reserved keyword, of course
  483.           uploader[41],
  484.           author[41],
  485.           requires[41],
  486.           version[41],
  487.           distribution[41],
  488.           type[12], // ____/_____
  489.           replaces[41],
  490.           output[VLONGFIELD + 1],
  491.           textfield[4096];
  492.     ULONG maintype,
  493.           subtype;
  494. };
  495. AGLOBAL struct AutodocStruct
  496. {   ULONG version;
  497.     TEXT      library[MEDFIELD + 1],        /* eg. workbench.library */
  498.              funcname[MEDFIELD + 1],
  499.           description[VLONGFIELD + 1],
  500.                output[VLONGFIELD + 1],
  501.              function[4096],
  502.               example[4096],
  503.                 notes[4096],
  504.                  bugs[4096],
  505.               seealso[4096];
  506.     struct
  507.     {   TEXT name[MEDFIELD + 1],
  508.              type[MEDFIELD + 1],
  509.              reg[MEDFIELD + 1],
  510.              desc[4096];
  511.     } var[9];
  512. };
  513. AGLOBAL struct IFFStruct
  514. {   ABOOL cd, rkm, obsolete, private, proposal, reserved, standard, unregistered, raw;
  515.     TEXT  pathname[VLONGFIELD + 1];
  516. };
  517. AGLOBAL struct AGDBStruct
  518. {   TEXT title[MEDFIELD + 1], // `short' is a reserved keyword, of course
  519.          publisher[MEDFIELD + 1],
  520.          players[MEDFIELD + 1],
  521.          hdinstallable[MEDFIELD + 1],
  522.          compatibility[MEDFIELD + 1],
  523.          gametype[MEDFIELD + 1],
  524.          output[VLONGFIELD + 1],
  525.          textfield[4096];
  526. };
  527. AGLOBAL struct IconStruct
  528. {   ULONG optimize, planar, // these must be ULONG not ABOOL nor BOOL!
  529.           type;             // this must be ULONG not UWORD!
  530. };
  531.